今天在把大规模数据写入文件时,发生了一件怪事,我明明已经把数据压缩到数值为0到1600之间了,但是读出的时候发现数据范围却在负三万到正三万之间,我试了很久很久,一开始我总认为是CPU优化的问题,难道忽略了一些数值?
写入的程序:
FILE *fp = fopen("./sample.raw","w");
for (int i = 0; i < 236; i++) {
for (int j = 0; j < 512 * 512; j++) {
if (bbes[i][j] >= 1500)
bbes[i][j] = (short)1500;
if (bbes[i][j] < 0)
bbes[i][j] = (short)0;
}
}
//把所有图片都加载进来
for (int i = 0; i < 236; i++) {
fwrite(bbes[i], sizeof(short), 512*512, fp);
}
fclose(fp);
读入的程序:
FILE *fp = fopen("C:\\Developer\\C++item\\DICOM_Analyse\\DICOM_Analyse\\sample.raw", "r");
myBbes = (short **)malloc(sizeof(short *) * 236);
for (int i = 0;i < 236;i++) {
short * ase = new short[512*512];
myBbes[i] = ase;
}
for (int i = 0; i < 236; i++) {
int len = fread(myBbes[i], sizeof(short), width*height, fp);
cout |